/**
 * 
 */
package gestionBulletins.model.persistance;

import java.util.ArrayList;
import java.util.Collection;

import gestionBulletins.model.Adherent;
import gestionBulletins.model.Section;

/**
 * @author paraita
 *
 */
public interface DaoSection {

	/**
	 * rend persistant une section. Si la section existe deja (basé sur le nom du president)
	 * alors on retourne <code>null</code>, sinon la section rendu persistante.
	 * @param section la section a rendre persistant dans la base de données.
	 * @return la section persistance, ou null s'il y a eu une erreur dans la base de données.
	 */
	public Section createSection(Section section);
	
	/**
	 * permet de recuperer une section de la base de données avec son id
	 * @param id l'id de la section dans la base de données
	 * @return la section recherchée
	 */
	public Section requestById(int id);
	/**
	 * recherche une section en fonction de son president
	 * @param president le president de la section qu'on cherche
	 * @return la section si elle existe, sinon null
	 */
	public Section requestByPresident(String president);
	
	/**
	 * recherche une section en fonction d'un adherent y étant inscrit
	 * @param adherent l'adherent dont on cherche la section
	 * @return la section de l'adhérent, ou <code>null</code> s'il n'est pas inscrit dans une section
	 */
	public Section requestByAdherent(Adherent adherent);
	
	/**
	 * permet de changer les infos de la section (le president en fait)
	 * @param section la section a mettre a jour dans la base de données
	 */
	public void update(Section section);
	
	/**
	 * supprime une section dans la base de données
	 * @param section la section a supprimer dans la base de données
	 */
	public void delete(Section section);
	
	/**
	 * cherche tout les presidents de section
	 * @return l'ensemble des presidents de section
	 */
	public Collection<String> getAllPresident();
	
	/**
	 * pour avoir toutes les sections de la base de données
	 * @return l'ensemble des sections de la base de données
	 */
	public ArrayList<Section> getAllSections();
}
